//#include<iostream>
//using namespace std;
//int num[4] = { 0 };
//int find7(int i)
//{
//	while (i)
//	{
//		if (i % 10 == 7)
//			return 1;
//		i /= 10;
//	}
//	return 0;
//}
//int main()
//{
//	int n;
//	cin >> n;
//	int i = 1;
//	for (i; i <= n; i++)
//	{
//		if (i % 7 == 0||find7(i))
//		{
//			num[(i - 1) % 4]++;
//			n++;
//		}
//		
//	}
//	for (i = 0; i < 4; i++)
//	{
//		cout << num[i] << endl;
//	}
//}
//#include<iostream>
//using namespace std;
//#include<utility>
//#include<set>
//set<pair<int, int>> s;
//int arr[5] = { 0 };
//int main()
//{
//	int n;
//	cin >> n;
//	while (n--)
//	{
//		int a, b;
//		cin >> a >> b;
//		s.insert(pair<int, int>(a, b));
//	}
//	set<pair<int, int>>::iterator it = s.begin();
//	while (it != s.end())
//	{
//		int count = 0;
//		pair<int, int> p = *it;
//		pair<int, int> p2 = *it;
//		it++;
//
//		p2.first--;
//		if (s.find(p2) == s.end())
//			continue;
//		p2.first += 2;
//		if (s.find(p2) == s.end())
//			continue;
//		p2.first--;
//		p2.second++;
//		if (s.find(p2) == s.end())
//			continue;
//		p2.second -= 2;
//		if (s.find(p2) == s.end())
//			continue;
//		p.first++;
//		p.second++;
//		if (s.find(p) != s.end())
//			count++;
//		p.first -= 2;
//		if (s.find(p) != s.end())
//			count++;
//		p.second -= 2;
//		if (s.find(p) != s.end())
//			count++;
//		p.first += 2;
//		if (s.find(p) != s.end())
//			count++;
//		arr[count]++;
//	}
//	for (int i = 0; i <= 4; i++)
//	{
//		cout << arr[i] << endl;
//	}
//}
#include<iostream>
using namespace std;
#include<vector>
#include<stack>
#include<map>
#include<string>
int find_num(string s)
{
	if (s[0] >= '0' && s[0] <= '9')
	{
		int j = 0;
		while (j<s.size()&&s[j] >= '0' && s[j] <= '9')
			j++;
		return stoi(string(s.begin(), s.begin() + j));
	}
	return 1;
}
string re_do(string s)
{
	int begin = 0;
	int end = s.size()-1;
	while (end<s.size())
	{
		
		while (begin<s.size()&&s[begin] != '(')
			begin++;
		end = begin + 1;
		int num = 0;
		while (end<s.size())
		{
			if (s[end] == '(')
				num++;
			if (s[end] == ')')
				num--;
			if (num == -1)
				break;
			end++;
		}
		if (end>=s.size())
			break;
		else
		{
			string ss(s.begin() + begin + 1, s.begin() + end);
			int k = find_num(string(s.begin()+end+1,s.end()));
			string s2 = s.substr(0, begin);
			while (k--)
				s2 += ss;
			end++;
			while (end < s.size() && s[end] >= '0' && s[end] <= '9')
				end++;
			if(end<s.size())
			s2 += s.substr(end);
			s = s2;
		}
		begin = 0;
		end = 0;
	}
	return s;
}
map<string, int> get_formula(string s)
{
	map<string, int> m;
	int i = 0;
	while (i < s.size())
	{
		int j = i + 1;
		while (j<s.size()&&s[j] != '+')
			j++;
		string ss = string(s.begin()+i,s.begin()+j);
		ss=re_do(ss);
		vector<int> st;
		stack<string> st2;
		int k = 0;
		while (k < ss.size())
		{
			int l = find_num(string(ss.begin() + k, ss.end()));
			st.push_back(l);
			while (ss[k] >= '0' && ss[k] <= '9')
				k++;
			if (k < ss.size())
			{
				if (k + 1 < ss.size() && ss[k + 1] >= 'a' && ss[k + 1] <= 'z')
				{
					st2.push(string(ss.begin() + k, ss.begin() + k + 2));
					k += 2;
				}
				else
				{
					st2.push(string(ss.begin() + k, ss.begin() + k + 1));
					k++;
				}
			}

		}
		if(ss[ss.size()-1]>='0'&&ss[ss.size()-1]<='9')
		{ }
		else
		{
			st.push_back(1);
		}
		int num = st.size();
		num--;
		while (!st2.empty())
		{
			string s3 = st2.top();
			st2.pop();
			m[s3]+=st[num] * st[0];
			num--;
		}
		i = j+1;
	}
	return m;
}

int main()
{
	int n;
	cin >> n;
	while (n--)
	{
		string s;
		cin >> s;
		int k = s.find('=');
		string s1(s.begin(), s.begin() + k);
		string s2(s.begin()+k+1, s.end());
		int flag = 1;
		
		map<string, int> m1=get_formula(s1);
		map<string, int> m2=get_formula(s2);
		if (m1.size() != m2.size())
		{
			flag = 0;
		}
		else
		{ 
			map<string, int>::iterator it = m1.begin();
			while (it != m1.end())
			{
				if (m2.find(it->first) == m2.end() || m2.find(it->first)->second != it->second)
				{
					flag = 0;
					break;
				}
				it++;
			}
		}
		if (flag)
		{
			cout << "Y" << endl;
		}
		else
			cout << "N" << endl;
	}
}